package com.android.job.receiver;

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.telephony.TelephonyManager;

import com.android.job.fusion.FusionField;
import com.android.job.util.LogX;

/**
 * ****************************************************************
 * 文件名称	: SystemReceiver.java
 * 作    者	: haiting.wang
 * 文件描述	:  APK安装、卸载，电话的监听广播接收类
 *****************************************************************
 */
public class SystemReceiver extends BroadcastReceiver
{

	/**
	 * 重写方法，当接收到广播时调用
	 * @param context	系统context对象
	 * @param intent    	系统intent对象
	 */
	@Override
	public void onReceive(Context context, Intent intent)
	{
		// 判空 返回
		if (FusionField.currentActivity == null)
		{
			return;
		}
		// 获取当前广播类型
		String action = intent.getAction();
		LogX.trace("SystemReceiver", "receive a broadcast:" + action);
		// SD卡已经成功挂载
		if (Intent.ACTION_MEDIA_MOUNTED.equals(action))
		{
//			Toast.makeText(FusionField.currentActivity,
//					LogicFacade.getText("|:sd_Load"), Toast.LENGTH_LONG).show();
		}
		// SD卡未挂载状态
		else if (Intent.ACTION_MEDIA_REMOVED.equals(action)
				|| Intent.ACTION_MEDIA_UNMOUNTED.equals(action)
				|| Intent.ACTION_MEDIA_BAD_REMOVAL.equals(action))
		{
//			LogX.closeFile();

			// 通知观察者sd卡被拔出
			SysRecObservable.getInstance().notifyObservers(action);

			// 消息提醒
//			Toast.makeText(FusionField.currentActivity,
//					LogicFacade.getText("|:sd_Unload"), Toast.LENGTH_LONG)
//					.show();
		}
		// 如果是拨打电话 
		else if (Intent.ACTION_NEW_OUTGOING_CALL.equals(intent.getAction()))
		{
			// 暂停所有任务
//			DownloadTaskManager.getInstance().onPauseAllTask();
		}
		else
		{
			// 如果是来电 
			TelephonyManager tm = (TelephonyManager) context
					.getSystemService(Service.TELEPHONY_SERVICE);

			// 判空操作
			if (tm == null)
			{
				return;
			}

			// 状态判断
			switch (tm.getCallState())
			{
			// 来电铃响
			case TelephonyManager.CALL_STATE_RINGING:
				// 暂停所有任务
//				DownloadTaskManager.getInstance().onPauseAllTask();
				break;
			// 接听来电
			case TelephonyManager.CALL_STATE_OFFHOOK:
				break;
			// 挂断来电
			case TelephonyManager.CALL_STATE_IDLE:
				break;
			default:
				break;
			}
		}
	}

	/**
	 * 获得intent过滤器
	 * @return    intent过滤器
	 */
	public static IntentFilter getintentFilter()
	{
		IntentFilter intentFilter = new IntentFilter();
		//在IntentFilter中选择你要监听的行为
		intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED);
		intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
		intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
		intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
		intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
		intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
		intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
		intentFilter.addDataScheme("file");
		intentFilter.addDataScheme("package");
		return intentFilter;
	}

	/**
	 *  获得电话intent过滤器
	 * @return    intent过滤器
	 */
	public static IntentFilter getPhoneIntentFilter()
	{
		IntentFilter intentFilter = new IntentFilter();
		//在IntentFilter中选择你要监听的行为
		intentFilter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);
		intentFilter.addAction("android.intent.action.PHONE_STATE");
		return intentFilter;
	}
	
	/**
	 *  获得电话intent过滤器
	 * @return    intent过滤器
	 */
	public static IntentFilter getUserIntentFilter()
	{
		IntentFilter intentFilter = new IntentFilter();
		//在IntentFilter中选择你要监听的行为
//		intentFilter.addAction(FusionField.Setting_Broadcast);
		return intentFilter;
	}
}
